package com.csun.cmny.provider.service;

import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.DmcCsunSleepDataHi;
import com.csun.cmny.provider.model.dto.app.AppSleepDateQueryDto;
import com.csun.cmny.provider.model.dto.csunsleep.CsunSleepDataHiQueryDto;
import com.csun.cmny.provider.model.entity.TimeRange;
import com.github.pagehelper.PageInfo;

import java.util.Date;
import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-02-15 10:35
 * @Description: the interface dmc csun sleep data hi service
 */
public interface DmcCsunSleepDataHiService extends IService<DmcCsunSleepDataHi> {

    /**
     * query csun sleep hi data list with page
     *
     * @param csunSleepDataHiQueryDto   csun sleep data hi query dto
     *
     * @return  the page info.
     */
    String queryCsunSleepHiDataListWithPage(CsunSleepDataHiQueryDto csunSleepDataHiQueryDto);

    /**
     * 通过起止时间查询设备数据
     * @param: [startTime, endTime]
     * @return: java.util.List<com.csun.cmny.provider.model.domain.DmcCsunSleepDataHi>
     */
    List<DmcCsunSleepDataHi> selectDataByDate(Long deviceId, Date startTime, Date endTime);

    /**
     * 查询时间范围内在床的时间段集合
     * @param: [date, deviceId]
     * @return: java.util.List<com.csun.cmny.provider.model.entity.TimeRange>
     */
    List<TimeRange> getSingleDayInBedTimeRangeList(CsunSleepDataHiQueryDto csunSleepDataHiQueryDto);

    /**
     * 统计离线次数
     * @param: [appSleepDateQueryDto]
     * @return: java.lang.Integer
     */
    Integer countOfflineTimes(AppSleepDateQueryDto appSleepDateQueryDto);

    /**
     * 呼吸报警次数
     * @param: [appSleepDateQueryDto]
     * @return: java.lang.Integer
     */
    Integer countBreathAlertTimes(AppSleepDateQueryDto appSleepDateQueryDto);

    /**
     * 统计心跳报警
     * @param: [appSleepDateQueryDto]
     * @return: java.lang.Integer
     */
    Integer countHeartbeatAlertTimes(AppSleepDateQueryDto appSleepDateQueryDto);
}
